/**
 * Definition for a binary tree node.
 * function TreeNode(val) {
 *     this.val = val;
 *     this.left = this.right = null;
 * }
 */
/**
 * @param {TreeNode} root
 * @param {number} sum
 * @return {boolean}
 */
var hasPathSum = function (root, sum) {
  if (!root) {
    return false;
  }
  let v1 = root.val
  let v2 = sum - v1;
  // 没有子节点， 判断 v2 的值是否为 0
  let hasNode = !root.left && !root.right
  if (hasNode) {
    return v2 === 0;
  }
  // 如果还有子节点，则继续递归遍历该节点的孩子
  return hasPathSum(root.left, v2) || hasPathSum(root.right, v2);
};
